from bank.Bank import Bank                                       #导包
from business.AccountBusiness import AccountBusiness

def atm_menu():
    print("********************************")
    print("*     中国农业银行帐户管理系统     *")
    print("********************************")
    print("*           选项               *")
    print("*          1.开户              *")
    print("*          2.存钱              *")
    print("*          3.取钱              *")
    print("*          4.转账              *")
    print("*          5.查询              *")
    print("*          6.Bye              *")
    print("********************************")

def main():                                                     # main方法
    bank = Bank("中国农业银行昌平沙河支行")                          # 实例化bank，调用Bank类，等效于调用 Bank.__init__(bank, "中国农业银行昌平沙河支行")
    business = AccountBusiness(bank)                            # 实例化

    while True:
        atm_menu()
        choice = input("请选择业务（1-6）：")

        if choice == '1':
            user_info = [input("请输入姓名："),
                         input("请输入6位数字密码："),
                         [input("请输入国家："), input("请输入省份："), input("请输入街道："), input("请输入门牌号：")],
                         input("请输入存款余额："),
                         bank.name]
            result, account = business.open_account(user_info)               # 修改版，给result传入状态码，然后传入account值

            status_msg = ['成功', '用户已存在', '用户库已满'][result - 1]         # 修改版，状态信息，使用result-1切片判断创建成功or失败

            print(f"开户结果：{status_msg}" + (f"，您的账号：{account}" if result == 1 else ""))   #输出打印结果并打印后台生成的8位随机生成的账号
        elif choice == '2':
            account = input("请输入账号：")
            amount = input("请输入存款金额：")
            result = business.deposit(account, amount)
            print(f"存钱结果：{'成功' if result else '失败'}")                           #三元判断

        elif choice == '3':
            account = input("请输入账号：")
            password = input("请输入6位数字密码：")
            amount = input("请输入取款金额：")
            result = business.withdraw(account, password, amount)
            print(f"取钱结果：{['正常', '账号不存在', '密码不对', '钱不够'][result]}")
        elif choice == '4':
            from_account = input("请输入转出账号：")
            to_account = input("请输入转入账号：")
            password = input("请输入6位数字密码：")
            amount = input("请输入转账金额：")
            result = business.transfer(from_account, to_account, password, amount)
            print(f"转账结果：{['正常', '账号不对', '密码不对', '钱不够'][result]}")          # 定义了一个包含三种可能结果的列表，通过result-1作为索引访问列表

        elif choice == '5':
            account = input("请输入账号：")
            password = input("请输入6位数字密码：")
            business.query_account(account, password)

        elif choice == '6':
            print("退出系统")
            break

        else:
            print("无效选择，请重新输入")

if __name__ == "__main__":     #控制开关，只运行名字为“main的python文件时才会启动”，相当于自主开关
    main()
